<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<style>
  #testElem {
    --height: 30px;
    --size: 12px;
    --size-and-height: var(--size)/var(--height);
    font: italic bold var(--size-and-height) serif, sans-serif;
  }

  #testElem2 {
    --width: 5px;
  }
</style>

<div id='testElem'></div>
<div id='testElem2' style='margin: var(--width); margin-top: 10px;'></div>
<div id='testElem3' style='--b1: 1px solid grey; --b2: 2px dashed green; border: var(--b1); border-right: var(--b2);'></div>
<script>

test(function() {
  var style = getComputedStyle(testElem);
  assert_equals(style.fontSize, '12px');
  assert_equals(style.lineHeight, '30px');
  assert_equals(style.fontStyle, 'italic');
  assert_equals(style.fontWeight, '700');
  assert_equals(style.fontFamily, 'serif, sans-serif');
}, "Test shorthand substitution in font.");

test(function() {
  var style = testElem2.style;
  assert_equals(style.cssText, 'margin-right: ; margin-bottom: ; margin-left: ; margin-top: 10px;');
  assert_equals(style.marginLeft, '');
  assert_equals(style.margin, '');
  assert_equals(style.marginTop, '10px');
}, "Test serialization with specific longhand.");

test(function() {
  var style = testElem3.style;
  assert_equals(style.cssText, '--b1: 1px solid grey; --b2: 2px dashed green; border-top-color: ; border-top-style: ; border-top-width: ; border-bottom-color: ; border-bottom-style: ; border-bottom-width: ; border-left-color: ; border-left-style: ; border-left-width: ; border-image-source: ; border-image-slice: ; border-image-width: ; border-image-outset: ; border-image-repeat: ; border-right: var(--b2);')
  assert_equals(style.border, '');
  assert_equals(style.borderLeft, '');
  assert_equals(style.borderTop, '');
  assert_equals(style.borderBottom, '');
  assert_equals(style.borderRight, 'var(--b2)');
}, "Test serialization for shorthands within shorthands.");

test(function() {
  var style = getComputedStyle(testElem3);
  assert_equals(style.borderTop, '1px solid rgb(128, 128, 128)');
  assert_equals(style.borderRight, '2px dashed rgb(0, 128, 0)');
}, "Test substitution for border");
</script>
